import constant from '@/utils/constant'
let { CACHE_LOGIN_TOKEN } = constant

import Cache from '@/utils/cache/index'


export default {
    /**
     * 获取css属性值
     * @param {Object} node 要获取属性的节点对象
     * @param {String} key 要获取的属性
     * @return {String} 返回获取到的属性值
    */
    getCss(node, key) {
        // IE-> dom.currentStyle 标准-> dom.defaultView.getComputedStyle
        return node.currentStyle ? node.currentStyle[key] : document.defaultView.getComputedStyle(node, null)[key];
    },

    /**
     * 保留n位小数，超过后面的小数全部砍掉（如有第n+1位小数以及更多，将全部去掉）
     * 如果是整数则返该回整数
     * @param {String, Number} str 要修改的数字
     * @params {Number} num 要保留的小数位 (默认为0)
     * @params {Boolean} bool 是否补0 （默认为false）
     * @return {String, Number} 最终返回值
    */
    'toFixed_n'(str, num, bool=false) {
        str += '';
        // 最大长度
        let length = str.indexOf('.') + 1 + num;
        if(bool) { // 补0
            if(Number.isInteger(Number(str))) return (str+'.').padEnd(str.length + 1 + num, '0');
            return str.substring(0, length).padEnd(length, '0');
        }
        //
        return str.includes('.') ? Number(str.substring(0, length)) : Number(str);
    },

    /**
     *
     * @param {*} val 要判断的值
     * @param {String} type 要判断的类型
     * @return {boolean}
     */
    isType (val, type) {
        return Object.prototype.toString.call(val) === `[object ${type}]`
    },

    /**
     * 获取数据类型
     * @param {*} con 要获取的 类型 （记得大驼峰写法）
     * @return {String} 返回对应的类型
     */
    getType (con) {
        /**
         * 所有类型
         * @type {string[]}
         */
        let type = ['String', 'Number', 'Boolean', 'Symbol', 'Undefined', 'Null',
            'Function', 'Date', 'Array', 'Object', 'RegExp', 'Error',
            'HTMLDocument', 'Window']
        return type.find(_ => Object.prototype.toString.call(con).includes(_))
    },

    /**
     * 判断是否登录
     * @returns {boolean}
     */
    isLogin () {
        let cache = new Cache()
        let token = cache.getCache(CACHE_LOGIN_TOKEN)
        return token ? true : false
    }
}
